/** 
 * Défini le jeu de fonctions pour l'ouverture et la fermeture du module de jeu, avec effet de slide. 
 */

window.onresize = resize_total;
var haut_jeu_menu = 150;
var jeu_deployed = 1; //0 = site en plein écran, 1 = jeu en petit, 2 = jeu ouvert à fond.

function get_jeu_deployed() { return jeu_deployed;}

function resize_jeu_menu(agrandit) {resize_jeu_menu_and_bordure(agrandit, true);}

/** Préviens tous les modules et la bordure inter-module pour tout mettre mettre correctement à la nouvelle ouverture. Si ouvrir est à true, procède ensuite à l'ouverture.
  * Sinon c'est que l'ouverture doit être appelée ailleurs. */
function resize_jeu_menu_and_bordure(agrandit, ouvrir) {
	var old_position = jeu_deployed;
	jeu_deployed = agrandit;
	if(jeu_deployed == 0) {
		haut_jeu_menu = 0;
		document.getElementById("site_contenu").style.marginTop = "-20px";
		document.getElementById("jeu_menu").style.borderBottom = "none";
	} else {
		document.getElementById("site_contenu").style.marginTop = "0px";
		document.getElementById("jeu_menu").style.borderBottom = "solid 5px #bd2c04";
		if(jeu_deployed == 2) haut_jeu_menu = window.innerHeight - 58;
		else haut_jeu_menu = 150;
	}
	document.getElementById("jeu_menu").contentWindow.resize_jeu_menu(jeu_deployed == 2);
	//Sécurité avant de mettre à jour le bouton, comme ça, si la page de site_contenu n'est pas chargée, on ne fait rien (le bouton sera le bon par défaut)
	if(typeof(document.getElementById("site_contenu").contentWindow.resize_contenu) == "function") 
		document.getElementById("site_contenu").contentWindow.resize_contenu(jeu_deployed);
	set_titre();
        if(jeu_deployed != 2)
            document.getElementById("site_contenu").focus();
        
	if(!ouvrir) {
		resize_contenu(); return;
	}
	
	var vitesse = 30;
	if(old_position == 2 || jeu_deployed == 2) //Si on ouvre ou qu'on ferme le jeu, la vitesse est doublée par rapport à juste le mode "site seul"
		vitesse = 80;
	if(old_position > jeu_deployed) { //Le site s'ouvre, donc il faut le redimensionner au début de la transition pour ne pas avoir de vide.
		resize_contenu(); launch_slide(haut_jeu_menu, undefined, vitesse, 2);
	} else //Le site se ferme, donc il faut le redimensionner à la fin de la transition pour ne pas avoir de vide.
		launch_slide(haut_jeu_menu, resize_contenu, vitesse, 2);
}
/** Ouvre complètement le jeu (position 2) s'il ne l'était pas. Sinon, le fait passer en petite ouverture (position 1).*/
function inverse_etat_jeu(){
	if(jeu_deployed != 2) resize_jeu_menu(2);
	else resize_jeu_menu(1);
}

function resize_total(){
	if(jeu_deployed == 2) document.getElementById("jeu_menu" ).style.height = (window.innerHeight - 58) + "px";
	resize_contenu();
	document.getElementById("jeu_menu" ).contentWindow.resize_game();
}
function resize_contenu(){
	if(jeu_deployed == 2) document.getElementById("site_contenu" ).style.height = "53px";  //Ne pas changer cette valeur sans la changer aussi dans resize_contenu() de menu.php.
	else if(jeu_deployed == 1) document.getElementById("site_contenu" ).style.height = (window.innerHeight - haut_jeu_menu - 5)+"px"; //5px nécessaire à cause de la marge (créée par la bordure ?)
	else document.getElementById("site_contenu" ).style.height = (window.innerHeight - haut_jeu_menu)+"px";
}


//JEU DE FONCTIONS/VARIABLES POUR FAIRE UN EFFET DE SLIDE

var timeout_en_cours_menu;
		
/** Fonction de lancement, qui met à jour les variables globales, utilisée ensuite
dans la fonction récursive one_step(). Parce que la fonction qui s'auto-appelle avec le même argument, il aime pas.*/
function launch_slide(new_taille, fonction_fin, vitesse_mvt, acceleration_mvt){
	clearTimeout(timeout_en_cours_menu); //Si un mouvement est déjà initié, on l'arrête proprement.
	one_step(new_taille, vitesse_mvt, acceleration_mvt, fonction_fin);
}
		
/** Cette fonction est donc récursive, elle s'auto-appelle pour faire avancer progressivement la largeur des bords, 
jusqu'à la bonne taille.*/
function one_step(new_taille, vitesse_mvt, acceleration_mvt, fonction_fin){
	var hauteur_manquante = new_taille - document.getElementById('jeu_menu').offsetHeight;
	//On y est presque, on finit donc d'ajuster, puis on appelle la fonction de fin s'il y en a une, et enfin on arrête la fonction récursive.
	if(hauteur_manquante <= vitesse_mvt && hauteur_manquante >= -vitesse_mvt) { 
		document.getElementById('jeu_menu').style.height = new_taille + 'px';
		if(typeof(fonction_fin) == "function")
			fonction_fin();
		return;
	}
	var ajout_pixels = vitesse_mvt; //La valeur qu'on va rajouter de chaque côté (négative en cas de fermeture)
	if(hauteur_manquante < 0)
		ajout_pixels = -vitesse_mvt;
			
		document.getElementById('jeu_menu').style.height = document.getElementById('jeu_menu').offsetHeight + ajout_pixels + 'px';
		vitesse_mvt += acceleration_mvt; //Permet de faire un petit effet d'acceleration.
		timeout_en_cours_menu = setTimeout(one_step, 10, new_taille, vitesse_mvt, acceleration_mvt, fonction_fin);
}


/* TOUT ça c'était nul, on s'en débarrasse à priori.
//JEU DE FONCTIONS/VARIABLES POUR FAIRE UN EFFET DE SLIDE D'OUVERTURE + EFFET BOUNCE
var liste_pts_vitesse; var current_pts;

function launch_ouverture_with_bounce() {
	document.getElementById('site_contenu').onload = undefined; //On désactiver l'effet de bounce au chargement pour qu'il ne se produise qu'une seule fois (maintenant)
	resize_jeu_menu_and_bordure(1, false);
	liste_pts_vitesse = new Array(new Array(0, 100), new Array(135, 0.6), new Array(150, 0.2), new Array(159, 0.2), new Array(150, 0.2), new Array(152, 0.1), new Array(150, 0.1));
	current_pts = -1;
	step_suite_slide();
}

function step_suite_slide() {
	current_pts++; 
	if(current_pts >= liste_pts_vitesse.length){
		return; //Fin du tableau.
	}
	launch_slide(liste_pts_vitesse[current_pts][0], step_suite_slide, liste_pts_vitesse[current_pts][1], 15);
}*/
